home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / source / swaga-c / copymove.swg / 0017_An OOP FILECOPY.pas < prev    next >
Pascal/Delphi Source File  |  1993-08-17  |  2KB  |  75 lines

  1. PROGRAM FileCopyDemo;         { FILECOPY.PAS }
  2.  
  3. USES Crt;
  4.  
  5. TYPE
  6.    Action  = (Input, Output);
  7.    DataBlk = array[1..512] of byte;
  8.    FileObj = OBJECT
  9.      fp : FILE;
  10.      CONSTRUCTOR OpenFile(FileName: string;
  11.                            FileAction: Action);
  12.      PROCEDURE ReadBlock(VAR fb: DataBlk;
  13.                             VAR Size: integer);
  14.      PROCEDURE WriteBlock(fb: DataBlk;
  15.                                 size: integer);
  16.      DESTRUCTOR CloseFile;
  17.    END;
  18.  
  19. CONSTRUCTOR FileObj.OpenFile;
  20. BEGIN
  21.   Assign(fp, FileName);
  22.   CASE FileAction of
  23.     Input: BEGIN
  24.       Reset(fp, 1);
  25.       IF IOResult <> 0 THEN
  26.         BEGIN
  27.           WriteLn(FileName, ' not found!');
  28.           Halt(1);
  29.         END;
  30.         WriteLn(FileName,' opened for read ... ');
  31.       END;
  32.     Output: BEGIN
  33.       Rewrite(fp, 1);
  34.       WriteLn(FileName,' opened for write ... ');
  35.       END;
  36.    END; {CASE}
  37. END;
  38.  
  39. DESTRUCTOR FileObj.CloseFile;
  40. BEGIN
  41.    Close(fp);
  42.    WriteLn('File closed ...');
  43. END;
  44.  
  45. PROCEDURE FileObj.ReadBlock;
  46. BEGIN
  47.    BlockRead(fp, fb, SizeOf(fb), Size);
  48.    WriteLn('Reading ', Size, ' bytes ... ');
  49. END;
  50.  
  51. PROCEDURE FileObj.WriteBlock;
  52. BEGIN
  53.    BlockWrite(fp, fb, Size);
  54.    WriteLn('Writing ', Size, ' bytes ... ');
  55. END;
  56.  
  57. VAR
  58.    InFile, OutFile : FileObj;
  59.    Data: DataBlk;
  60.    Size: integer;
  61.  
  62. BEGIN
  63.    ClrScr;
  64.    InFile.OpenFile('FILECOPY.PAS', Input);
  65.    OutFile.OpenFile('FILECOPY.CPY', Output);
  66.    REPEAT
  67.       InFile.ReadBlock(Data, Size);
  68.       OutFile.WriteBlock(Data, Size);
  69.    UNTIL Size <> SizeOf(DataBlk);
  70.    InFile.CloseFile;
  71.    OutFile.CloseFile;
  72.    Write('Press Enter to quit ... ');
  73.    ReadLn;
  74. END.
  75.